1. Technical Field
The present disclosure relates to transaction processing, and more particularly, to a system and method for out-of-order execution of strictly-ordered transactional workloads.
2. Discussion of Related Art
In a transaction processing system, sequential execution of workloads is often required to ensure the consistency of real world events and the correctness of processes. For example, two events with causal relationships (e.g., a deposit of $100 and a withdrawal of $100) should be processed by an event processing system with the correct causal order. As another example, in a system that uses replicated state machines, all state machines should sequentially execute the same series of workloads to ensure that their states are always consistent relative to each other.
Sequential execution of workloads, however, may result in decreased performance. For example, using a single process/thread to process a large amount of workloads can result in prohibitively long execution latency and limited throughput. While parallel execution may be used instead of sequential execution to improve latency and throughput when executing workloads that are entirely independent from each other, utilization of traditional parallel processing techniques may not be successfully used for dependent workloads for which the results of execution depend on the order of execution of the workloads.